                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #include <U8g2lib.h>
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <EEPROM.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecure.h>

#define EEPROM_write(address,p) { int i = 0;byte *pp = (byte*)&(p);for(;i<sizeof(p);i++) EEPROM.write(address+i,pp[i]);EEPROM.end();}
#define EEPROM_read(address,p) { int i = 0;byte *pp = (byte*)&(p);for(;i<sizeof(p);i++) pp[i]=EEPROM.read(address+i);}

#define OK    15
#define DOWN  16
#define UP    14
#define led   12

int count = 0;     //时间计数
bool WIFI_Status = true;   //WIFI状态标志位

String ver = "V2.7.1";
String type = "NANO";
String pcb = "R2";
String dp = "OLED 1.3inh";
String mod = "ESP-12S";

int ti = 1;
int ok_p = 0;
int up_p = 0;
int down_p = 0;
int au = 0;

String fans;      //粉丝数
String play;      //播放数
String nickname;  //昵称
String uid;       //UID
String follow;    //关注
String like;      //获赞
String level;     //等级
String ip;        //公网
String isp;       //运营商
String vip;       //会员
String elec;      //充电
String date;      //时钟日期
String time0;     //24h时间
String time1;     //12h时间
String apm;       //时钟样式
String greet;     //问候语

String city;  //城市
String week;  //星期
String wea;   //天气
String wea_img; //icon
String tem;   //气温
String win;   //风
String day;   //日期
String wsp;//风速
String air;   //空气质量

String week_1;
String wea_1;
String wea_img_1;
String tem_1;
String win_1;
String day_1;
String wsp_1;

String week_2;
String wea_2;
String wea_img_2;
String tem_2;
String win_2;
String day_2;
String wsp_2;

/* 小电视动画 64*64 */
static const unsigned char PROGMEM b0[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, 0x0f, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x30, 0x18, 0x74, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x3c, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0xf8, 0x74, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x0f, 0xe0, 0x75, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x02, 0xc0, 0x75, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xa0, 0x0d, 0x64, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xe0, 0x07, 0x64, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x40, 0x06, 0x74, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xfe, 0xff, 0x77, 0x00, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x0f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf9, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM b1[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x70, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x03, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x10, 0x08, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x3c, 0x3c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x1f, 0xf8, 0x36, 0x00, 0x00, 0x00, 0x00, 0xae, 0x0f, 0xf0, 0x36, 0x00, 0x00, 0x00, 0x00, 0xae, 0x03, 0xe0, 0x36, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xb0, 0x0f, 0x76, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xe0, 0x07, 0x76, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xfc, 0x1f, 0x7a, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0xde, 0x00, 0x80, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf8, 0x3f, 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xfc, 0x3f, 0x3b, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1c, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM b2[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3d, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x0f, 0xf0, 0x37, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x08, 0x36, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x3c, 0x7c, 0x74, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x3f, 0xf8, 0x74, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x1f, 0xf0, 0x75, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x07, 0xc0, 0x74, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x80, 0x05, 0x74, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xf0, 0x0f, 0x74, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xe0, 0x07, 0x74, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xff, 0x76, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xff, 0xff, 0x77, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf0, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf9, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM b3[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x98, 0xfc, 0xff, 0x19, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, 0xf0, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x10, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x1c, 0x32, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x7c, 0x76, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x0f, 0xf8, 0x76, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x03, 0xe0, 0x76, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x40, 0x76, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x04, 0x76, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xf0, 0x07, 0x76, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xe0, 0x03, 0x76, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xf8, 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM b4[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0xf0, 0x36, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x3c, 0x3c, 0x34, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x3e, 0xf8, 0x34, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x1f, 0xf0, 0x35, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x07, 0xe0, 0x75, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xb0, 0x07, 0x74, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xe0, 0x07, 0x74, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xe0, 0xff, 0x37, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xff, 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf9, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM b5[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xdf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xc7, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xef, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x00, 0x80, 0x73, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0xc0, 0x19, 0x00, 0x00, 0xdc, 0x03, 0x00, 0x00, 0xe0, 0xc4, 0x1f, 0xfc, 0xb1, 0x07, 0x00, 0x00, 0xe0, 0xe2, 0x1f, 0xfc, 0x63, 0x07, 0x00, 0x00, 0x70, 0xc3, 0x0f, 0xf0, 0x43, 0x0e, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x40, 0x0e, 0x00, 0x00, 0x70, 0x03, 0x00, 0x04, 0x40, 0x0e, 0x00, 0x00, 0x70, 0x02, 0xf8, 0x07, 0x40, 0x0f, 0x00, 0x00, 0xe0, 0x02, 0x70, 0x03, 0x20, 0x07, 0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, 0x90, 0x07, 0x00, 0x00, 0xc0, 0x19, 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xc0, 0xf7, 0xff, 0xff, 0xf7, 0x01, 0x00, 0x00, 0x80, 0x0f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM b6[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0x7b, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0xc0, 0x1d, 0x0c, 0x18, 0x98, 0x03, 0x00, 0x00, 0xe0, 0xc6, 0x1f, 0xfc, 0x31, 0x07, 0x00, 0x00, 0x60, 0xe2, 0x0f, 0xf8, 0x63, 0x06, 0x00, 0x00, 0x70, 0xc3, 0x00, 0x00, 0x41, 0x0e, 0x00, 0x00, 0x70, 0x03, 0x80, 0x04, 0x40, 0x0e, 0x00, 0x00, 0x70, 0x02, 0xf8, 0x07, 0x40, 0x07, 0x00, 0x00, 0xe0, 0x04, 0x20, 0x00, 0x30, 0x07, 0x00, 0x00, 0xe0, 0x0d, 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0xc0, 0x77, 0xff, 0xff, 0xf6, 0x01, 0x00, 0x00, 0x80, 0x1f, 0xfc, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x1c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

/* 小电视错误图案 40*42 */
static const unsigned char PROGMEM err[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x38, 0xff, 0x03, 0x00, 0x00, 0x7c, 0xc0, 0x3f, 0x00, 0x80, 0x33, 0xc0, 0xc1, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x08, 0x10, 0xfe, 0x7f, 0x06, 0x10, 0xc8, 0x00, 0x00, 0x0c, 0x10, 0x48, 0x00, 0x00, 0x10, 0x10, 0x68, 0x00, 0x00, 0x00, 0x10, 0x28, 0x00, 0x00, 0x00, 0x10, 0x28, 0x00, 0x00, 0x20, 0x10, 0x28, 0x10, 0x00, 0x20, 0x10, 0x28, 0x18, 0x18, 0x20, 0x10, 0x28, 0x0c, 0x30, 0x20, 0x10, 0x28, 0x07, 0xe0, 0x20, 0x10, 0x28, 0x06, 0xc0, 0x21, 0x10, 0x28, 0x0e, 0x70, 0x20, 0x10, 0x28, 0x06, 0xf0, 0x20, 0x10, 0x08, 0x00, 0x60, 0x20, 0x10, 0x08, 0x00, 0x00, 0x20, 0x08, 0xf0, 0x0f, 0x00, 0x20, 0x08, 0x10, 0x70, 0xf8, 0x0f, 0x00, 0x18, 0x40, 0x06, 0x18, 0x04, 0x08, 0x74, 0x02, 0x10, 0x02, 0x08, 0x3c, 0x3c, 0x20, 0x01, 0x18, 0x04, 0x20, 0xa0, 0x01, 0xe0, 0xf3, 0x43, 0x70, 0x00, 0x40, 0x00, 0xfc, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

/* 天气ICON 32*32 */
static const unsigned char PROGMEM w_lei[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x80, 0xc7, 0x1f, 0x00, 0xf0, 0xf7, 0x3f, 0x00, 0xf8, 0xfb, 0x7f, 0x00, 0xf8, 0xfb, 0xff, 0x00, 0xf8, 0xf9, 0xff, 0x00, 0xf8, 0xfc, 0xff, 0x00, 0x38, 0xff, 0xff, 0x07, 0x98, 0xff, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xf8, 0x1f, 0xe0, 0x7f, 0xf2, 0x1f, 0xe0, 0x3f, 0xf7, 0x1f, 0xc0, 0x9f, 0xf3, 0x1f, 0xc0, 0xdf, 0xc1, 0x0f, 0x80, 0xcf, 0xdf, 0x0f, 0x00, 0xce, 0xdf, 0x03, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_qing[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x03, 0xc0, 0x01, 0x80, 0x03, 0x80, 0xc1, 0x87, 0x01, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x3c, 0xff, 0xff, 0x3c, 0x3c, 0xff, 0xff, 0x3c, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x80, 0xe1, 0x87, 0x01, 0xc0, 0x01, 0x80, 0x03, 0xc0, 0x00, 0x00, 0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_yin[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x80, 0x8f, 0x07, 0x00, 0xc0, 0xe7, 0x3f, 0x00, 0xf0, 0xf3, 0x7f, 0x00, 0xf8, 0xfb, 0x7f, 0x00, 0xf8, 0xfb, 0xff, 0x00, 0xf8, 0xfd, 0xff, 0x00, 0x78, 0xfc, 0xff, 0x01, 0xb8, 0xff, 0xff, 0x07, 0xd0, 0xff, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x0f, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_duoyun[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x80, 0x63, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xb8, 0x1f, 0x00, 0x00, 0xb8, 0xcf, 0x1f, 0x00, 0xc0, 0xf7, 0x3f, 0x00, 0xc0, 0xfb, 0x7f, 0x00, 0xc0, 0xfb, 0xff, 0x00, 0xc0, 0xf9, 0xff, 0x00, 0x38, 0xfc, 0xff, 0x00, 0x18, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x0f, 0x80, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_zhenyu[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x80, 0x63, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x18, 0x3f, 0x00, 0x00, 0xb8, 0xcf, 0x0f, 0x00, 0xd0, 0xe7, 0x3f, 0x00, 0xc0, 0xf3, 0x7f, 0x00, 0xc0, 0xfb, 0xff, 0x00, 0xc0, 0xf9, 0xff, 0x00, 0xb8, 0xfc, 0xff, 0x00, 0x38, 0xff, 0xff, 0x03, 0x88, 0xff, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x1f, 0x80, 0xff, 0xff, 0x0f, 0x00, 0xff, 0xff, 0x03, 0x00, 0x18, 0x63, 0x00, 0x00, 0x9c, 0x73, 0x00, 0x00, 0x8e, 0x31, 0x00, 0x00, 0x86, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_xiaoyu[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x61, 0x00, 0x00, 0xb6, 0x6d, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_zhongyu[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x0e, 0x18, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xe7, 0xc0, 0x00, 0x00, 0x63, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_dayu[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x03, 0x00, 0xce, 0x31, 0x00, 0x00, 0xc6, 0x38, 0x00, 0x00, 0xe7, 0x18, 0x00, 0x00, 0x63, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_wu[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x80, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM w_xue[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x88, 0x11, 0x00, 0x00, 0x9c, 0x39, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xc0, 0xc0, 0x03, 0x03, 0xe0, 0x81, 0x81, 0x07, 0xc0, 0x81, 0x81, 0x03, 0x80, 0x83, 0xc1, 0x01, 0x80, 0xc7, 0xe3, 0x01, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0xcf, 0xe3, 0x01, 0x00, 0x87, 0xc1, 0x01, 0x80, 0x83, 0x81, 0x03, 0xc0, 0x83, 0x81, 0x07, 0x80, 0xc1, 0x03, 0x03, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x9c, 0x39, 0x00, 0x00, 0x88, 0x11, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

/* b站logo 72*32 */
static const unsigned char PROGMEM logo[] = { 0x30, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x0e, 0xe0, 0x03, 0x00, 0xe0, 0x01, 0x3e, 0x00, 0x00, 0x0e, 0xe0, 0x03, 0x00, 0xe0, 0x01, 0x3e, 0x00, 0x00, 0x0e, 0xe0, 0x03, 0x00, 0xe0, 0x01, 0x3e, 0x00, 0x00, 0x1e, 0xe0, 0x03, 0x00, 0xe0, 0x01, 0x3e, 0x00, 0x00, 0x1e, 0xc0, 0x03, 0x00, 0xc0, 0x01, 0x3e, 0x00, 0x00, 0x1e, 0xc0, 0x03, 0x00, 0xc0, 0x01, 0x3c, 0x00, 0x58, 0x9e, 0xc6, 0x03, 0x00, 0xcd, 0x51, 0x3c, 0x00, 0xd8, 0x9c, 0xc7, 0x03, 0x00, 0xcd, 0x59, 0x3c, 0x00, 0xd0, 0x9c, 0xc7, 0x03, 0x00, 0xcd, 0x59, 0x3c, 0x00, 0xd0, 0x9c, 0xc7, 0x03, 0x00, 0xcf, 0x51, 0x3c, 0x00, 0xd0, 0x9c, 0x87, 0x03, 0x00, 0xcb, 0x51, 0x3c, 0x00, 0x00, 0x1c, 0x80, 0x03, 0x00, 0x80, 0x01, 0x3c, 0x00, 0xc0, 0x1c, 0x80, 0x07, 0x00, 0x8c, 0x03, 0x38, 0x00, 0xf0, 0x9c, 0x87, 0x07, 0x00, 0x9e, 0x73, 0x38, 0x00, 0xe0, 0x98, 0x87, 0x07, 0x00, 0x9e, 0x73, 0x78, 0x00, 0xe0, 0x19, 0x87, 0x07, 0x00, 0x9e, 0x73, 0xf8, 0x0f, 0xe0, 0x39, 0x87, 0xff, 0x01, 0x9e, 0xf3, 0xf8, 0xff, 0xe0, 0x39, 0x87, 0xff, 0x1f, 0x9c, 0xf3, 0xf8, 0xff, 0xe3, 0x39, 0x87, 0xff, 0x7f, 0x9c, 0xf3, 0xf8, 0xff, 0xcf, 0x39, 0x07, 0xff, 0xff, 0x9c, 0xf3, 0xf8, 0xf1, 0xdf, 0x39, 0x07, 0x3f, 0xfe, 0x9d, 0xf3, 0xf8, 0xc1, 0xcf, 0x39, 0x07, 0x3f, 0xf8, 0x3d, 0xf3, 0xf0, 0xe3, 0xcf, 0x39, 0x07, 0x3f, 0xfc, 0x3c, 0xf3, 0xf0, 0xf3, 0xc7, 0x39, 0x07, 0x3f, 0xff, 0x38, 0xe3, 0xf0, 0xfb, 0x83, 0x03, 0x07, 0xbf, 0x3f, 0x38, 0xe0, 0xf0, 0xff, 0x80, 0x01, 0x07, 0xff, 0x1f, 0x18, 0xe0, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00 };

/* wifi图案 16*16 */
static const unsigned char PROGMEM wifi[] = { 0xc0, 0x7f, 0x00, 0xf0, 0xff, 0x01, 0xf8, 0xff, 0x07, 0xfe, 0xff, 0x0f, 0x7f, 0x80, 0x1f, 0x1e, 0x3f, 0x1e, 0xcc, 0xff, 0x0c, 0xf0, 0xff, 0x01, 0xf0, 0xff, 0x03, 0xf0, 0xe3, 0x01, 0x60, 0xc0, 0x00, 0x00, 0x1f, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x0c, 0x00 };

/* 16*16 */
static const unsigned char PROGMEM likes[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0f, 0x80, 0x07, 0xc0, 0x07, 0xee, 0x7f, 0xee, 0x7f, 0xee, 0x7f, 0xee, 0x7f, 0xee, 0x3f, 0xee, 0x3f, 0xee, 0x3f, 0xee, 0x1f, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM fanss[] = { 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0xfc, 0x3f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfc, 0x3f, 0xf8, 0x1f, 0xf0, 0x1f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM plays[] = { 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0x3f, 0xfe, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00 };

/* 32*16 */
static const unsigned char PROGMEM lv6[] = { 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0xc0, 0xf3, 0xf3, 0x38, 0xff, 0xf3, 0xf3, 0x38, 0xff, 0xf3, 0xf3, 0x38, 0xff, 0xf3, 0xf3, 0x38, 0xc0, 0xf3, 0xf3, 0x38, 0xc0, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0x43, 0x3c, 0xcf, 0xf3, 0x07, 0x3e, 0xcf, 0x03, 0x0e, 0x3f, 0xc0, 0x03, 0x9e, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
static const unsigned char PROGMEM lv5[] = { 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0xc0, 0xf3, 0xe3, 0x38, 0xff, 0xf3, 0xe3, 0x38, 0xff, 0xf3, 0xe3, 0x38, 0xff, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0x43, 0xfc, 0xcf, 0xf3, 0x07, 0xfe, 0xcf, 0x03, 0x0e, 0x3f, 0xc0, 0x03, 0x9e, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
static const unsigned char PROGMEM lv4[] = { 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xcf, 0xff, 0xff, 0x3f, 0xcf, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0x43, 0xfc, 0xcf, 0xf3, 0x07, 0xfe, 0xcf, 0x03, 0x0e, 0xff, 0xcf, 0x03, 0x9e, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
static const unsigned char PROGMEM lv3[] = { 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0xc0, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0x43, 0xfc, 0xcf, 0xf3, 0x07, 0xfe, 0xcf, 0x03, 0x0e, 0x3f, 0xc0, 0x03, 0x9e, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
static const unsigned char PROGMEM lv2[] = { 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0xc0, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0xe3, 0xf8, 0xcf, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0x38, 0xc0, 0xf3, 0xe3, 0x38, 0xff, 0xf3, 0x43, 0x3c, 0xff, 0xf3, 0x07, 0x3e, 0xff, 0x03, 0x0e, 0x3f, 0xc0, 0x03, 0x9e, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
static const unsigned char PROGMEM lv1[] = { 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x7f, 0xf8, 0xf3, 0xe3, 0xf8, 0xf8, 0xf3, 0xe3, 0xf8, 0xf9, 0xf3, 0xe3, 0xf8, 0xf9, 0xf3, 0xe3, 0xf8, 0xf9, 0xf3, 0xe3, 0xf8, 0xf9, 0xf3, 0xe3, 0xf8, 0xf9, 0xf3, 0x43, 0xfc, 0xf9, 0xf3, 0x07, 0xfe, 0xf9, 0x03, 0x0e, 0x7f, 0xe0, 0x03, 0x9e, 0x7f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
static const unsigned char PROGMEM lv0[] = { 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0xc0, 0xf3, 0xe3, 0x38, 0xce, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0xe3, 0x38, 0xcf, 0xf3, 0x43, 0x3c, 0xcf, 0xf3, 0x07, 0x3e, 0xce, 0x03, 0x0e, 0x3f, 0xc0, 0x03, 0x9e, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };

static const unsigned char PROGMEM bilibili[] = { /* b站小电视 53*48*/
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x0c, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x80, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x3f, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
  0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x60, 0xfe, 0xff, 0xff, 0xff, 0xcf, 0x01, 0x60, 0xfe, 0xff, 0xff,
  0xff, 0xcf, 0x01, 0x60, 0xfe, 0xff, 0xff, 0xff, 0xcf, 0x01, 0x60, 0x0e, 0x00, 0x00, 0x00, 0xce, 0x01, 0x60, 0x0e, 0x00, 0x00, 0x00, 0xce, 0x01, 0x60, 0x0e,
  0x00, 0x00, 0x00, 0xce, 0x01, 0x60, 0x0e, 0x00, 0x00, 0x00, 0xce, 0x01, 0x60, 0x0e, 0x3c, 0x80, 0x0f, 0xce, 0x01, 0x60, 0x0e, 0x3f, 0x80, 0x0f, 0xce, 0x01,
  0x60, 0xce, 0x0f, 0x00, 0x3c, 0xce, 0x01, 0x60, 0xee, 0x00, 0x00, 0xf0, 0xce, 0x01, 0x60, 0x0e, 0x00, 0x00, 0x60, 0xce, 0x01, 0x60, 0x0e, 0x00, 0x00, 0x00,
  0xce, 0x01, 0x60, 0x0e, 0x30, 0x84, 0x03, 0xce, 0x01, 0x60, 0x0e, 0x30, 0x84, 0x03, 0xce, 0x01, 0x60, 0x0e, 0x30, 0x84, 0x03, 0xce, 0x01, 0x60, 0x0e, 0xf0,
  0xff, 0x00, 0xce, 0x01, 0x60, 0x0e, 0xe0, 0x7f, 0x00, 0xce, 0x01, 0x60, 0x0e, 0x00, 0x00, 0x00, 0xce, 0x01, 0x60, 0x0e, 0x00, 0x00, 0x00, 0xce, 0x01, 0x60,
  0xfe, 0xff, 0xff, 0xff, 0xcf, 0x01, 0x60, 0xfe, 0xff, 0xff, 0xff, 0xcf, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0,
  0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x8e, 0x01, 0x00, 0x30, 0x0e, 0x00, 0x00, 0xf8, 0x00, 0x00,
  0xf0, 0x07, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

static const unsigned char PROGMEM wifi_logo[] = { /* 配网二维码 62*62 */
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0x63, 0xcc, 0x18, 0x00, 0xc0, 0x03, 0x00, 0xf8, 0x63, 0xcc, 0x18, 0x00, 0xc0, 0x03, 0x00, 0xf8, 0x63, 0xcc, 0x18, 0x00, 0xc0, 0xe3, 0xff, 0xf8, 0x03, 0x3c, 0x18, 0xff, 0xc7, 0xe3, 0xff, 0xf8, 0x03, 0x3c, 0x18, 0xff, 0xc7, 0x63, 0xc0, 0x18, 0x80, 0x31, 0x18, 0x03, 0xc6, 0x63, 0xc0, 0x18, 0x80, 0x31, 0x18, 0x03, 0xc6, 0x63, 0xc0, 0x18, 0x9c, 0x31, 0x18, 0x03, 0xc6, 0x63, 0xc0, 0x78, 0x9c, 0x31, 0x18, 0x03, 0xc6, 0x63, 0xc0, 0x78, 0x9c, 0x31, 0x18, 0x03, 0xc6, 0x63, 0xc0, 0xf8, 0x83, 0x0f, 0x1f, 0x03, 0xc6, 0x63, 0xc0, 0xf8, 0x83, 0x0f, 0x1f, 0x03, 0xc6, 0xe3, 0xff, 0xf8, 0xe3, 0xff, 0x1f, 0xff, 0xc7, 0xe3, 0xff, 0xf8, 0xe3, 0xff, 0x1f, 0xff, 0xc7, 0x03, 0x00, 0x18, 0x63, 0xc6, 0x18, 0x00, 0xc0, 0x03, 0x00, 0x18, 0x63, 0xc6, 0x18, 0x00, 0xc0, 0x03, 0x00, 0x18, 0x63, 0xc6, 0x18, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xe0, 0x01, 0xff, 0xff, 0xff, 0x03, 0x0c, 0x00, 0xe3, 0xcf, 0x80, 0x3f, 0xfe, 0x03, 0x0c, 0x00, 0xe3, 0xcf, 0x80, 0x3f, 0xfe, 0x03, 0x0c, 0x00, 0xe3, 0xcf, 0x80, 0x3f, 0xfe, 0x7f, 0xcc, 0x1f, 0xfc, 0x31, 0x80, 0xff, 0xc7, 0x7f, 0xcc, 0x1f, 0xfc, 0x31, 0x80, 0xe3, 0xc7, 0x7f, 0xcc, 0x01, 0x03, 0xc0, 0xff, 0x63, 0xc0, 0x7f, 0xcc, 0x01, 0x03, 0xc0, 0xff, 0x63, 0xc0, 0x03, 0xcc, 0x1f, 0x7c, 0xc0, 0x78, 0x7c, 0xf8, 0x03, 0xcc, 0x1f, 0x7c, 0xc0, 0x78, 0xfc, 0xf9, 0x03, 0xcc, 0x1f, 0x7c, 0xc0, 0x78, 0xfc, 0xf9, 0x63, 0xc0, 0x01, 0xe3, 0xff, 0x18, 0x8c, 0xc1, 0x63, 0xc0, 0x01, 0xe3, 0xff, 0x18, 0x8c, 0xc1, 0x7f, 0xc0, 0xff, 0x83, 0xf1, 0x00, 0x8f, 0xc7, 0x7f, 0xc0, 0xff, 0x8f, 0xf1, 0x00, 0x8f, 0xc7, 0x7f, 0x3c, 0xe0, 0x8f, 0xf1, 0x00, 0x8f, 0xc7, 0x63, 0x3c, 0xe0, 0x70, 0xc0, 0xe7, 0x70, 0xc0, 0x63, 0x3c, 0xe0, 0x70, 0xc0, 0xe7, 0x70, 0xc0, 0x1f, 0xc0, 0x07, 0x70, 0x3e, 0x00, 0x8e, 0xf1, 0x1f, 0xc0, 0x07, 0x70, 0x3e, 0x00, 0x8e, 0xf1, 0x63, 0x3c, 0xe0, 0xfc, 0xf1, 0x00, 0x80, 0xf1, 0x63, 0x3c, 0xe0, 0xfc, 0xf1, 0x00, 0x80, 0xff, 0x63, 0x3c, 0xe0, 0xfc, 0xf1, 0x00, 0x80, 0xff, 0xff, 0xff, 0x1f, 0x7c, 0xf0, 0xf8, 0x03, 0xc0, 0xff, 0xff, 0x1f, 0x7c, 0xf0, 0xf8, 0x03, 0xc0, 0x03, 0x00, 0x18, 0x00, 0x30, 0x18, 0xf3, 0xc1, 0x03, 0x00, 0x18, 0x00, 0x30, 0x18, 0xf3, 0xc1, 0x03, 0x00, 0x18, 0xff, 0x31, 0x18, 0x83, 0xc7, 0xe3, 0xff, 0x18, 0xff, 0xf1, 0xf8, 0x83, 0xc7, 0xe3, 0xff, 0x18, 0xff, 0xf1, 0xf8, 0x83, 0xc7, 0x63, 0xc0, 0x18, 0xff, 0xc1, 0x00, 0x80, 0xf9, 0x63, 0xc0, 0x18, 0xff, 0xc1, 0x00, 0xf0, 0xf9, 0x63, 0xc0, 0xf8, 0x03, 0xc0, 0x7f, 0x70, 0xf8, 0x63, 0xc0, 0xf8, 0x03, 0xc0, 0x7f, 0x70, 0xf8, 0x63, 0xc0, 0x18, 0x1c, 0x38, 0x66, 0x70, 0xc0, 0x63, 0xc0, 0x18, 0x1c, 0x38, 0x66, 0x80, 0xc7, 0x63, 0xc0, 0x18, 0x1c, 0x38, 0x66, 0x80, 0xc7, 0xe3, 0xff, 0x18, 0x63, 0x3e, 0xe0, 0x83, 0xf9, 0xe3, 0xff, 0x18, 0x63, 0x3e, 0xe0, 0x83, 0xf9, 0x03, 0x00, 0x18, 0xe3, 0x31, 0x60, 0xfc, 0xc1, 0x03, 0x00, 0x18, 0xe3, 0x31, 0x60, 0xfc, 0xc1, 0x03, 0x00, 0x18, 0xe3, 0x31, 0x60, 0xfc, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};

U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(115200);
  EEPROM.begin(4096);
  String d = get_String(EEPROM.read(4), 1900);
  for (int i = 0; i < d.length(); i++) {
    if (d[i] != '#' && d[i] != '\n') {
      uid = uid+d[i];
    } else {
      break;
    }
  }
  Serial.println("设置B站账号:" + uid);
  Serial.println("亮度" + get_String(EEPROM.read(0), 1024));
  Serial.println("轮播" + get_String(EEPROM.read(0), 1500));
  Serial.println("样式" + get_String(EEPROM.read(0), 1800));
  u8g2.begin();
  upContrast();
  u8g2.enableUTF8Print();
  Serial.println("\n" + getSsid());
  if (!getSsid().startsWith("#", 0)) {
    SmartConfig(0);
  } else if (!AutoConfig()) {
    if (wifiErr("WiFi连接失败", "再次连接", "重新配置", 51, 1)) {
      ESP.restart();
    } else {
      SmartConfig(0);
    }
  }
  ti = 1;
  loading(true);

}

void loading(bool time) {
  u8g2.setFont(u8g2_font_wqy13_t_gb2312);
  int i = 0;
  getDateTime();
  while (1) {
    u8g2.firstPage();
    do {
      if (i >= 0 && time) {
        u8g2.setCursor(4, 15);
        u8g2.print("校准时间...");
      }
      if (i >= 0 && !time) {
        u8g2.setCursor(36, 15);
        u8g2.print(type + " " + pcb);
      }
      if (i >= 1) {
        u8g2.setCursor(4, 31);
        u8g2.print("更新天气数据...");
      }
      if (i >= 2) {
        u8g2.setCursor(4, 47);
        u8g2.print("更新B站数据...");
      }
      if (i >= 3) {
        u8g2.setCursor(4, 63);
        u8g2.print("OK!");
      }
    } while (u8g2.nextPage());
    if (i == 0 && time) {
      i++;
    } else if (i == 1) {
      if (time) {
        getCity();
        getWeather();
      }
      i++;
    } else if (i == 2) {
//      Serial.println("设置B站账号:" + uid);
      getBiliBili();
      getBiliBili2();
      getBiliBili3();
      getElec();
      i++;
    } else if (i >= 3) {
      if (time) {
        delay(500);
      }
      return;
    } else {
      i++;
    }
    delay(50);
  }
}

int t10 = 16;
int t11 = 0;
int t12 = 89;
int t13 = 102;

int t00 = -100;
int t01 = -124;
int t02 = -98;
int t03 = -91;

int t20 = 132;
int t21 = 150;
int t22 = 150;
int t23 = 150;
int t24 = 0;
int t25 = 0;
int t26 = 0;

int mov = 0;

int d0 = 0;
int d2 = 0;
int timei = 0;
int bi = 0;
void loop() {
  u8g2.setFont(u8g2_font_wqy13_t_gb2312);
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_freedoomr25_mn);
    u8g2.setCursor(t10, 48);
    if (getClock() == "[12h]") {
      u8g2.print(time1);
    } else {
      u8g2.print(time0);
    }
    u8g2.setFont(u8g2_font_wqy13_t_gb2312);
    u8g2.setCursor(t11, 13);
    u8g2.print("空气" + getAir());
    u8g2.setCursor(t11, 62);
    u8g2.print(date);
    u8g2.setCursor(t12, 62);
    u8g2.print(week);
    //      u8g2.setFont(u8g2_font_tenfatguys_tu);
    u8g2.setCursor(t13, 12);
    u8g2.print(apm);

    if (d0 == 0) {
      u8g2.setFont(u8g2_font_wqy13_t_gb2312);
      u8g2.drawXBMP(t00, 0, 72, 32, logo);
      u8g2.drawXBMP(t01, 32, 22, 16, wifi);
      u8g2.setCursor(t02, 46);
      u8g2.print(WiFi.SSID());
      u8g2.setCursor(t03, 62);
      u8g2.print("> 更 多 <");
    }

    if (d2 == 0) {
      u8g2.setFont(u8g2_font_wqy13_t_gb2312);
      u8g2.setCursor(t20, 15);
      u8g2.print(greet + nickname);
      u8g2.setFont(u8g2_font_tenfatguys_tu);
      u8g2.setCursor(t21, 29);
      u8g2.drawXBMP(t21 - 18, 16, 16, 16, fanss);
      u8g2.print(fans);
      u8g2.setCursor(t22, 45);
      u8g2.drawXBMP(t22 - 18, 32, 16, 16, plays);
      u8g2.print(play);
      u8g2.setCursor(t23, 62);
      u8g2.drawXBMP(t23 - 18, 48, 16, 16, likes);
      u8g2.print(like);
    }

  } while ( u8g2.nextPage() );

  if (mov > 0) {
    mov--;
    t00 = t00 - 16;
    t01 = t01 - 16;
    t02 = t02 - 16;
    t03 = t03 - 16;
    t10 = t10 - 16;
    t11 = t11 - 16;
    t12 = t12 - 16;
    t13 = t13 - 16;
    t20 = t20 - 16;
    t21 = t21 - 16;
    t22 = t22 - 16;
    t23 = t23 - 16;
    t24 = t24 - 16;
    t25 = t25 - 16;
    t26 = t26 - 16;
  } else if (mov < 0) {
    mov++;
    t00 = t00 + 16;
    t01 = t01 + 16;
    t02 = t02 + 16;
    t03 = t03 + 16;
    t10 = t10 + 16;
    t11 = t11 + 16;
    t12 = t12 + 16;
    t13 = t13 + 16;
    t20 = t20 + 16;
    t21 = t21 + 16;
    t22 = t22 + 16;
    t23 = t23 + 16;
    t24 = t24 + 16;
    t25 = t25 + 16;
    t26 = t26 + 16;
  } else {
    button();
    //在画面静止时更新，以免动画卡顿
    timei++;
    bi++;
    if (timei > 30) {
      timei = 0;
      getDateTime();
    }
    if (bi > 2000) {
      bi = 0;
      getBiliBili();
      getBiliBili2();
      if(ti == 2) {
        t21 -= 128;
        t22 -= 128;
        t23 -= 128;
      }
      if(ti == 0) {
        t21 += 128;
        t22 += 128;
        t23 += 128;
      }
    }
  }
  delay(20);
  upAuto();


}

String getAir() {
  if (air == "优" || air == "良") {
    return "质量" + air;
  } else {
    return air;
  }
}

void button() {
  if (digitalRead(UP) == HIGH && up_p == 0) {
    au = 0;
    if (ti > 0) {
      digitalWrite(led, HIGH);
      ti--;
      mov = -8;
      down_p = 1;
      if (ti == 0) {
        d0 = 0;
        d2 = 1;
      } else if (ti == 1) {
        d0 = 1;
        d2 = 0;
      }
    }
  } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
    au = 0;
    if (ti < 2) {
      digitalWrite(led, HIGH);
      ti++;
      mov = 8;
      up_p = 1;
      if (ti == 1) {
        d0 = 0;
        d2 = 1;
      } else if (ti == 2) {
        d0 = 1;
        d2 = 0;
      }
    }
  } else if (digitalRead(OK) == HIGH && ok_p == 0) {
    digitalWrite(led, HIGH);
    au = 0;
    ok_p = 1;
    if (ti == 0) {
      more();
    } else if (ti == 2) {
      biliInfo();
    } else {
      weather();
    }
  }
  delay(40);
  if (digitalRead(UP) == LOW && up_p == 1) {
    digitalWrite(led, LOW);
    up_p = 0;
    au = 0;
  } else if (digitalRead(DOWN) == LOW && down_p == 1) {
    digitalWrite(led, LOW);
    down_p = 0;
    au = 0;
  } else if (digitalRead(OK) == LOW && ok_p == 1) {
    digitalWrite(led, LOW);
    ok_p = 0;
    au = 0;
  }
}

void setWifi() {
  u8g2.firstPage();
  do {
    u8g2.drawXBMP(0, 0, 64, 64, wifi_logo);
    u8g2.setFont(u8g2_font_wqy13_t_gb2312);
    u8g2.setCursor(68, 15);
    u8g2.print("请使用微");
    u8g2.setCursor(68, 30);
    u8g2.print("信扫描二");
    u8g2.setCursor(68, 45);
    u8g2.print("维码配置");
    u8g2.setCursor(68, 60);
    u8g2.print("网络");
  } while ( u8g2.nextPage() );
}

void dpTime() {
  u8g2.firstPage();
  do {

  } while ( u8g2.nextPage() );
}


void SmartConfig(int re)
{
  setWifi();
  WiFi.mode(WIFI_STA);
  Serial.println("\r\nWait for Smartconfig...");
  WiFi.beginSmartConfig();
  while (1)
  {
    delay(50);                   // wait for a second
    if (WiFi.smartConfigDone())
    {
      Serial.println("SmartConfig Success");
      Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
      Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
      putSsid(1, WiFi.SSID());
      ESP.restart();
      break;
    } else {
//      Serial.println(".");
    }
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
    } else if (digitalRead(UP) == HIGH && up_p == 0) {
      digitalWrite(led, HIGH);
      up_p = 1;
      Serial.println("setUID");
      setUID();
    } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
      digitalWrite(led, HIGH);
      down_p = 1;
      ESP.restart();
    }
  }
}

bool AutoConfig()
{
  int bili = 0;
  WiFi.begin();
  //如果觉得时间太长可改
  for (int i = 0; i < 150; i++)
  {
    biliEffect(26, "正在连接WiFi");
    int wstatus = WiFi.status();
    if (wstatus == WL_CONNECTED)
    {
      Serial.println("WIFI SmartConfig Success");
      Serial.printf("SSID:%s", WiFi.SSID().c_str());
      Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
      Serial.print("LocalIP:");
      Serial.print(WiFi.localIP());
      Serial.print(" ,GateIP:");
      Serial.println(WiFi.gatewayIP());
      return true;
    }
    else
    {
      Serial.print("WIFI AutoConfig Waiting......");
      Serial.println(wstatus);
      delay(50);
    }
  }
  Serial.println("WIFI AutoConfig Faild!" );
  return false;
}

//a写入字符串长度，b是起始位，str为要保存的字符串
void set_String(int a, int b, String str) {
  EEPROM.write(a, str.length());//EEPROM第a位，写入str字符串的长度
  //把str所有数据逐个保存在EEPROM
  for (int i = 0; i < str.length(); i++) {
    EEPROM.write(b + i, str[i]);
  }
  EEPROM.commit();
}

//a位是字符串长度，b是起始位
String get_String(int a, int b) {
  String data = "";
  //从EEPROM中逐个取出每一位的值，并链接
  for (int i = 0; i < a; i++) {
    data += char(EEPROM.read(b + i));
  }
  return data;
}

void putSsid(int a, String ssid) {
  set_String(0, a, "#" + WiFi.SSID());
}


String getSsid() {
  return get_String(EEPROM.read(0), 1);
}

/* 小电视跳跃动画 */
int bili = 0;
void biliEffect(int y, String text) {
  u8g2.firstPage();
  do {
    if (bili == 0) {
      u8g2.drawXBMP(32, -9, 64, 64, b0);
    }
    if (bili == 1) {
      u8g2.drawXBMP(32, -9, 64, 64, b1);
    }
    if (bili == 2) {
      u8g2.drawXBMP(32, -9, 64, 64, b2);
    }
    if (bili == 3) {
      u8g2.drawXBMP(32, -9, 64, 64, b3);
    }
    if (bili == 4) {
      u8g2.drawXBMP(32, -9, 64, 64, b4);
    }
    if (bili == 5) {
      u8g2.drawXBMP(32, -9, 64, 64, b5);
    }
    if (bili == 6) {
      u8g2.drawXBMP(32, -9, 64, 64, b6);
    }
    u8g2.setFont(u8g2_font_wqy13_t_gb2312);
    u8g2.setCursor(y, 61);
    u8g2.print(text);
  } while ( u8g2.nextPage() );
  bili++;
  if (bili >= 7) {
    bili = 0;
  }
}

bool wifiErr(String title, String yes, String no, int y, int img) {
  int a = 0;
  int b = 0;
  while (1) {
    u8g2.firstPage();
    do {
      if(img == 1) {
        u8g2.drawXBMP(0, 0, 40, 42, err);
      }
      u8g2.setFont(u8g2_font_wqy13_t_gb2312);
      u8g2.setCursor(42, 26);
      u8g2.print(title);
      u8g2.setCursor(y, 48);
      u8g2.print(yes);
      u8g2.setCursor(y, 62);
      u8g2.print(no);
      if (a == 0) {
        b = 47;
      } else {
        b = 61;
      }
      u8g2.setCursor(y - 13, b);
      u8g2.print(">");
    } while ( u8g2.nextPage() );
    if (digitalRead(OK) == HIGH ) {
      digitalWrite(led, HIGH);
      if (a == 0) {
        return true;
      } else {
        return false;
      }
    } else if (digitalRead(UP) == HIGH ) {
      digitalWrite(led, HIGH);
      a = 0;
    } else if (digitalRead(DOWN) == HIGH ) {
      digitalWrite(led, HIGH);
      a = 1;
    }
    delay(50);
  }
}
void getWeather() {
  String json = httpGet("http://api.smug0804.com/weather.php?city=北京");
  Serial.println(json);
  DynamicJsonDocument doc(10240);
  deserializeJson(doc, json);
  JsonObject obj = doc.as<JsonObject>();
  String s1 = obj["data"][0]["day"];
  day = s1;
  String s2 = obj["data"][0]["wea"];
  wea = s2;
  String s3 = obj["data"][0]["wea_img"];
  wea_img = s3;
  String s6 = obj["data"][0]["win"][0];
  win = s6;
  String s7 = obj["data"][0]["tem1"];
  String s8 = obj["data"][0]["tem2"];
  tem = s7 + "/" + s8;
  String s9 = obj["data"][0]["win_speed"];
  wsp = s9;
  String s10 = obj["data"][1]["day"];
  day_1 = s10;
  String s11 = obj["data"][1]["wea"];
  wea_1 = s11;
  String s12 = obj["data"][1]["wea_img"];
  wea_img_1 = s12;
  String s14 = obj["data"][1]["week"];
  week_1 = s14;
  String s15 = obj["data"][1]["win"][0];
  win_1 = s15;
  String s16 = obj["data"][1]["tem1"];
  String s17 = obj["data"][1]["tem2"];
  tem_1 = s16 + "/" + s17;
  String s18 = obj["data"][1]["win_speed"];
  wsp_1 = s18;
  String s19 = obj["data"][0]["air_level"];
  air = s19;

  String s20 = obj["data"][2]["day"];
  day_2 = s20;
  String s21 = obj["data"][2]["wea"];
  wea_2 = s21;
  String s22 = obj["data"][2]["wea_img"];
  wea_img_2 = s22;
  String s23 = obj["data"][2]["week"];
  week_2 = s23;
  String s24 = obj["data"][2]["win"][0];
  win_2 = s24;
  String s25 = obj["data"][2]["tem1"];
  String s26 = obj["data"][2]["tem2"];
  tem_2 = s25 + "/" + s26;
  String s27 = obj["data"][2]["win_speed"];
  wsp_2 = s27;
//  Serial.println(wsp_2);
}

void weather() {
  int page = 0;
  int mov = 0;

  int x10 = 0;
  int x11 = 14;
  int x12 = 28;
  int x13 = 42;
  int x14 = 56;
  int x20 = 64;
  int x21 = 78;
  int x22 = 92;
  int x23 = 106;
  int x24 = 120;
  int x30 = 128;
  int x31 = 142;
  int x32 = 156;
  int x33 = 170;
  int x34 = 184;

  while (1) {
    u8g2.firstPage();
    do {
      u8g2.setFont(u8g2_font_wqy13_t_gb2312);
      if (page != 2) {
        if (wea == "yun") {
          u8g2.drawXBMP(0, x10, 32, 32, w_duoyun);
        } else if (wea_img == "lei") {
          u8g2.drawXBMP(0, x10, 32, 32, w_zhenyu);
        } else if (wea_img == "yin") {
          u8g2.drawXBMP(0, x10, 32, 32, w_yin);
        } else if (wea_img == "yu") {
          u8g2.drawXBMP(0, x10, 32, 32, w_xiaoyu);
        } else if (wea_img == "xue") {
          u8g2.drawXBMP(0, x10, 32, 32, w_xue);
        } else if (wea_img == "wu") {
          u8g2.drawXBMP(0, x10, 32, 32, w_wu);
        } else if (wea_img == "yun") {
          u8g2.drawXBMP(0, x10, 32, 32, w_duoyun);
        } else {
          u8g2.drawXBMP(0, x10, 32, 32, w_qing);
        }
        u8g2.setCursor(33, x11);
        u8g2.print(day);
        u8g2.setCursor(33, x12);
        u8g2.print(city);
        u8g2.setCursor(84, x12);
        u8g2.print(week);
        u8g2.setCursor(0, x13);
        u8g2.print(wea);
        u8g2.setCursor(70, x13);
        u8g2.print(tem);
        u8g2.setCursor(0, x14);
        u8g2.print(win + " " + wsp);
      }

      if (wea == "yun") {
        u8g2.drawXBMP(0, x20, 32, 32, w_duoyun);
      } else if (wea_img_1 == "lei") {
        u8g2.drawXBMP(0, x20, 32, 32, w_zhenyu);
      } else if (wea_img_1 == "yin") {
        u8g2.drawXBMP(0, x20, 32, 32, w_yin);
      } else if (wea_img_1 == "yu") {
        u8g2.drawXBMP(0, x20, 32, 32, w_xiaoyu);
      } else if (wea_img_1 == "xue") {
        u8g2.drawXBMP(0, x20, 32, 32, w_xue);
      } else if (wea_img_1 == "wu") {
        u8g2.drawXBMP(0, x20, 32, 32, w_wu);
      } else if (wea_img_1 == "yun") {
        u8g2.drawXBMP(0, x20, 32, 32, w_duoyun);
      } else {
        u8g2.drawXBMP(0, x20, 32, 32, w_qing);
      }
      u8g2.setCursor(33, x21);
      u8g2.print(day_1);
      u8g2.setCursor(33, x22);
      u8g2.print(city);
      u8g2.setCursor(84, x22);
      u8g2.print(week_1);
      u8g2.setCursor(0, x23);
      u8g2.print(wea_1);
      u8g2.setCursor(70, x23);
      u8g2.print(tem_1);
      u8g2.setCursor(0, x24);
      u8g2.print(win_1 + " " + wsp_1);

      if (page != 0) {
        if (wea == "yun") {
          u8g2.drawXBMP(0, x30, 32, 32, w_duoyun);
        } else if (wea_img_2 == "lei") {
          u8g2.drawXBMP(0, x30, 32, 32, w_zhenyu);
        } else if (wea_img_2 == "yin") {
          u8g2.drawXBMP(0, x30, 32, 32, w_yin);
        } else if (wea_img_2 == "yu") {
          u8g2.drawXBMP(0, x30, 32, 32, w_xiaoyu);
        } else if (wea_img_2 == "xue") {
          u8g2.drawXBMP(0, x30, 32, 32, w_xue);
        } else if (wea_img_2 == "wu") {
          u8g2.drawXBMP(0, x30, 32, 32, w_wu);
        } else if (wea_img_2 == "yun") {
          u8g2.drawXBMP(0, x30, 32, 32, w_duoyun);
        } else {
          u8g2.drawXBMP(0, x30, 32, 32, w_qing);
        }
        u8g2.setCursor(33, x31);
        u8g2.print(day_2);
        u8g2.setCursor(33, x32);
        u8g2.print(city);
        u8g2.setCursor(84, x32);
        u8g2.print(week_2);
        u8g2.setCursor(0, x33);
        u8g2.print(wea_2);
        u8g2.setCursor(70, x33);
        u8g2.print(tem_2);
        u8g2.setCursor(0, x34);
        u8g2.print(win_2 + " " + wsp_2);
      }
    } while ( u8g2.nextPage() );
    delay(40);
    if (mov > 0) {
      mov--;
      x10 = x10 - 16;
      x11 = x11 - 16;
      x12 = x12 - 16;
      x13 = x13 - 16;
      x14 = x14 - 16;
      x20 = x20 - 16;
      x21 = x21 - 16;
      x22 = x22 - 16;
      x23 = x23 - 16;
      x24 = x24 - 16;
      x30 = x30 - 16;
      x31 = x31 - 16;
      x32 = x32 - 16;
      x33 = x33 - 16;
      x34 = x34 - 16;
    } else if (mov < 0) {
      mov++;
      x10 = x10 + 16;
      x11 = x11 + 16;
      x12 = x12 + 16;
      x13 = x13 + 16;
      x14 = x14 + 16;
      x20 = x20 + 16;
      x21 = x21 + 16;
      x22 = x22 + 16;
      x23 = x23 + 16;
      x24 = x24 + 16;
      x30 = x30 + 16;
      x31 = x31 + 16;
      x32 = x32 + 16;
      x33 = x33 + 16;
      x34 = x34 + 16;
    } else {
      if (digitalRead(OK) == HIGH && ok_p == 0) {
        digitalWrite(led, HIGH);
        ok_p = 1;
        return;
      } else if (digitalRead(UP) == HIGH && page > 0 && up_p == 0) {
        digitalWrite(led, HIGH);
        up_p = 1;
        page--;
        mov = -4;
      } else if (digitalRead(DOWN) == HIGH && page < 2 && down_p == 0) {
        digitalWrite(led, HIGH);
        down_p = 1;
        page++;
        mov = 4;
      }
      if (digitalRead(UP) == LOW && up_p == 1) {
        digitalWrite(led, LOW);
        up_p = 0;
      } else if (digitalRead(DOWN) == LOW && down_p == 1) {
        digitalWrite(led, LOW);
        down_p = 0;
      } else if (digitalRead(OK) == LOW && ok_p == 1) {
        digitalWrite(led, LOW);
        ok_p = 0;
      }
    }
  }
}


void getBiliBili() {
  String inf = httpGet("http://api.smug0804.com/bilibili/index.php?uid=" + uid);
  DynamicJsonDocument doc(4096);
  deserializeJson(doc, inf);
  JsonObject obj = doc.as<JsonObject>();
  String s = obj["data"]["likes"];
  like = s;
  String s1 = obj["data"]["archive"]["view"];
  play = s1;
  t23 = getPos(like);
  t22 = getPos(play);
//  Serial.println("like"+String(t23));
//  Serial.println("play"+String(t22));
}

void getBiliBili2() {
  String inf = httpGet("http://api.bilibili.com/x/relation/stat?jsonp=jsonp&vmid=" + uid);
  DynamicJsonDocument doc(4096);
  deserializeJson(doc, inf);
  JsonObject obj = doc.as<JsonObject>();
  String s = obj["data"]["following"];
  follow = s;
  String s1 = obj["data"]["follower"];
  fans = s1;
  t21 = getPos(fans);
//  Serial.println("fan" + String(t21));
}

void getBiliBili3() {
  String inf = httpGet("http://api.bilibili.com/x/space/acc/info?jsonp=jsonp&mid=" + uid);
  DynamicJsonDocument doc(4096);
  deserializeJson(doc, inf);
  JsonObject obj = doc.as<JsonObject>();
  String s = obj["data"]["name"];
  nickname = s;
  String s1 = obj["data"]["level"];
  level = s1;
  String s2 = obj["data"]["vip"]["type"];
  if (s2 == "0") {
    vip = "注册用户";
  } else {
    String s3 = obj["data"]["vip"]["label"]["text"];
    vip = s3;
    if (s3 == "") {
      vip = "注册用户";
    }
  }

}

void getElec() {
  String infoo = httpGet("http://elec.bilibili.com/api/query.rank.do?mid=" + uid);
  DynamicJsonDocument docc(4096);
  deserializeJson(docc, infoo);
  JsonObject objj = docc.as<JsonObject>();
  String s6 = objj["code"];
//  Serial.println(s6);
  if (s6 == "0") {
    String s8 = objj["data"]["count"];
    elec = s8;
  } else {
    elec = "0";
  }
}

void getDateTime() {
  String infoo = httpGet("http://api.smug0804.com/time.php");
  DynamicJsonDocument docc(4096);
  deserializeJson(docc, infoo);
  JsonObject obj = docc.as<JsonObject>();
  String s1 = obj["time0"];
  if (s1 != "null") {
    time0 = s1;
    String s2 = obj["time1"];
    time1 = s2;
    String s3 = obj["type"];
    apm = s3;
    String s4 = obj["date"];
    date = s4;
    String s5 = obj["week"];
    week = s5;
    String s6 = obj["greet"];
    greet = s6;
  }
  //    Serial.println("获取时间:"+time0);
}

String httpGet(String url) {
  HTTPClient http;
  http.begin(url);
  int code = http.sendRequest("GET");
  //Serial.println(String(code));
  String text = http.getString();
  http.end();
  return text;
}

void getCity() {
  String inf = httpGet("http://api.bilibili.com/x/web-interface/zone");
  DynamicJsonDocument doc(4096);
  deserializeJson(doc, inf);
  JsonObject obj = doc.as<JsonObject>();
  String s = obj["data"]["city"];
  city = s;
  String s1 = obj["data"]["addr"];
  ip = s1;
  String s2 = obj["data"]["isp"];
  isp = s2;
}

void more() {
  int x = 30;
  int item = 4;
  u8g2.setFont(u8g2_font_wqy13_t_gb2312);
  while (1) {
    u8g2.firstPage();
    do {
      int x1 = item % 4;
      if (x1 == 1) {
        u8g2.setCursor(20, 30);
      } else if (x1 == 2) {
        u8g2.setCursor(20, 46);
      } else if (x1 == 3) {
        u8g2.setCursor(20, 62);
      } else {
        u8g2.setCursor(20, 14);
      }
      u8g2.print(">");

      if (item >= 4 && item < 8) {
        u8g2.setCursor(x, 15);
        u8g2.print("返回");
        u8g2.setCursor(x, 31);
        u8g2.print("网络详情");
        u8g2.setCursor(x, 47);
        u8g2.print("重置网络");
        u8g2.setCursor(x, 63);
        u8g2.print("重置账号");
      } else if (item >= 8 && item < 12) {
        u8g2.setCursor(x, 15);
        u8g2.print("时钟样式 " + getClock());
        u8g2.setCursor(x, 31);
        u8g2.print("自动轮播 " + getAuto());
        u8g2.setCursor(x, 47);
        u8g2.print("屏幕亮度 " + getLight());
        u8g2.setCursor(x, 63);
        u8g2.print("版本信息");
      } else if (item >= 12 && item < 16) {
        u8g2.setCursor(x, 15);
        u8g2.print("关于");
        u8g2.setCursor(x, 31);
        u8g2.print("恢复出厂设置");
      }
    } while ( u8g2.nextPage() );
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
      switch (item) {
        case 4:
          return;
          break;
        case 5:
          network();
          break;
        case 6:
          SmartConfig(1);
          break;
        case 7:
          setUID();
          break;
        case 8:
          setClock();
          break;
        case 9:
          setAuto();
          break;
        case 10:
          setLight();
          break;
        case 11:
          getVersion();
          break;
        case 12:
          getAboutus();
          break;
        case 13:
          getDie();
          break;
      }
    } else if (digitalRead(UP) == HIGH && up_p == 0 && item > 4) {
      digitalWrite(led, HIGH);
      up_p = 1;
      item--;
    } else if (digitalRead(DOWN) == HIGH && down_p == 0 && item < 13) {
      digitalWrite(led, HIGH);
      down_p = 1;
      item++;
    }
    if (digitalRead(UP) == LOW && up_p == 1) {
      digitalWrite(led, LOW);
      up_p = 0;
    } else if (digitalRead(DOWN) == LOW && down_p == 1) {
      digitalWrite(led, LOW);
      down_p = 0;
    } else if (digitalRead(OK) == LOW && ok_p == 1) {
      digitalWrite(led, LOW);
      ok_p = 0;
    }
    delay(50);
  }
}


void network() {
  u8g2.setFont(u8g2_font_wqy13_t_gb2312);
  while (1) {
    u8g2.firstPage();
    do {
      u8g2.setCursor(0, 15);
      u8g2.print("[SSID]" + WiFi.SSID());
      u8g2.setCursor(0, 31);
      u8g2.print(String("[私]") + WiFi.localIP().toString());
      u8g2.setCursor(0, 47);
      u8g2.print("[公]" + ip);
      u8g2.setCursor(0, 63);
      u8g2.print("[运营商]" + city + isp);
    } while ( u8g2.nextPage() );
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
      return;
    } else if (digitalRead(UP) == HIGH && up_p == 0) {
      digitalWrite(led, HIGH);
      up_p = 1;
      return;
    } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
      digitalWrite(led, HIGH);
      down_p = 1;
      return;
    }
    if (digitalRead(UP) == LOW && up_p == 1) {
      digitalWrite(led, LOW);
      up_p = 0;
    } else if (digitalRead(DOWN) == LOW && down_p == 1) {
      digitalWrite(led, LOW);
      down_p = 0;
    } else if (digitalRead(OK) == LOW && ok_p == 1) {
      digitalWrite(led, LOW);
      ok_p = 0;
    }
    delay(50);
  }
}


void setLight() {
  String light = get_String(EEPROM.read(0), 1024);
  if (light == "[低]") {
    set_String(0, 1024, "[中]");
  } else if (light == "[中]") {
    set_String(0, 1024, "[高]");
  } else {
    set_String(0, 1024, "[低]");
  }
  upContrast();
//  Serial.println("Set OLED light is " + light);
}

void upContrast() {
  String light = get_String(EEPROM.read(0), 1024);
  if (light == "[低]") {
    u8g2.setContrast(0);
  } else if (light == "[中]") {
    u8g2.setContrast(90);
  } else {
    u8g2.setContrast(255);
  }
}

String getLight() {
  String light = get_String(EEPROM.read(0), 1024);
  if (!light.startsWith("[", 0)) {
    return "[高]";
  } else {
    return light;
  }
}


void setUID() {
  u8g2.setFont(u8g2_font_wqy13_t_gb2312);
  int s = 1;
  String text = "";
  String dian = ".";
  bool up = true;
  while (1) {
    u8g2.firstPage();
    do {
      //        u8g2.drawXBMP(37,0,53,48,bilibili);
      u8g2.setCursor(0, 15);
      u8g2.print("发送UID@账号id到串口");
      u8g2.setCursor(0, 31);
      u8g2.print("串口波特率:115200");
      u8g2.setCursor(0, 47);
      u8g2.print("等待发送" + dian);
      if (!up) {
        u8g2.setCursor(0, 63);
        u8g2.print("格式错误");
      }
    } while (u8g2.nextPage());
    if (s == 1) {
      dian = "";
    } else if (s == 2) {
      dian = ".";
    } else if (s == 3) {
      dian = "..";
    } else {
      dian = "...";
      s = 0;
    }
    s++;
    if (Serial.available() > 0) {
      while (Serial.available() > 0) {
        text += char(Serial.read());
      }
      Serial.println(text);
      if (text.startsWith("UID@", 0)) {
        String id = text.substring(text.indexOf("@")+1);
        setUIDSave(id + "#");
        Serial.println("重置账号为" + id);
        ESP.restart();
      } else {
        up = false;
      }
    } else {
      text = "";
    }
    delay(50);
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
      return;
    } else if (digitalRead(UP) == HIGH && up_p == 0) {
      digitalWrite(led, HIGH);
      up_p = 1;
      return;
    } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
      digitalWrite(led, HIGH);
      down_p = 1;
      return;
    }
    if (digitalRead(UP) == LOW && up_p == 1) {
      digitalWrite(led, LOW);
      up_p = 0;
    } else if (digitalRead(DOWN) == LOW && down_p == 1) {
      digitalWrite(led, LOW);
      down_p = 0;
    } else if (digitalRead(OK) == LOW && ok_p == 1) {
      digitalWrite(led, LOW);
      ok_p = 0;
    }
  }
}

void getVersion() {
  while (1) {
    u8g2.firstPage();
    do {
      u8g2.setCursor(0, 15);
      u8g2.print("固件版本 " + ver);
      u8g2.setCursor(0, 31);
      u8g2.print("Type " + type + " " + pcb);
      u8g2.setCursor(0, 47);
      u8g2.print("Display " + dp);
      u8g2.setCursor(0, 63);
      u8g2.print("Model " + mod);
    } while (u8g2.nextPage());
    delay(50);
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
      return;
    } else if (digitalRead(UP) == HIGH && up_p == 0) {
      digitalWrite(led, HIGH);
      up_p = 1;
      return;
    } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
      digitalWrite(led, HIGH);
      down_p = 1;
      return;
    }
    if (digitalRead(UP) == LOW && up_p == 1) {
      digitalWrite(led, LOW);
      up_p = 0;
    } else if (digitalRead(DOWN) == LOW && down_p == 1) {
      digitalWrite(led, LOW);
      down_p = 0;
    } else if (digitalRead(OK) == LOW && ok_p == 1) {
      digitalWrite(led, LOW);
      ok_p = 0;
    }
  }
}


void getAboutus() {
  while (1) {
    u8g2.firstPage();
    do {
      u8g2.setCursor(0, 15);
      u8g2.print("Copyright Ruok233");
      u8g2.setCursor(0, 31);
      u8g2.print("根据MIT协议发行");
      u8g2.setCursor(0, 47);
      u8g2.print("技术支持 Misaka API");
      u8g2.setCursor(0, 62);
      u8g2.print("api.misakaloli.com");
    } while (u8g2.nextPage());
    delay(50);
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
      return;
    } else if (digitalRead(UP) == HIGH && up_p == 0) {
      digitalWrite(led, HIGH);
      up_p = 1;
      return;
    } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
      digitalWrite(led, HIGH);
      down_p = 1;
      return;
    }
    if (digitalRead(UP) == LOW && up_p == 1) {
      digitalWrite(led, LOW);
      up_p = 0;
    } else if (digitalRead(DOWN) == LOW && down_p == 1) {
      digitalWrite(led, LOW);
      down_p = 0;
    } else if (digitalRead(OK) == LOW && ok_p == 1) {
      digitalWrite(led, LOW);
      ok_p = 0;
    }
  }
}

String getAuto() {
  String au = get_String(EEPROM.read(0), 1500);
  if (!au.startsWith("[", 0)) {
    return "[关]";
  } else {
    return au;
  }
}

void setAuto() {
  String au = get_String(EEPROM.read(0), 1500);
  if (au == "[10s]") {
    set_String(0, 1500, "[20s]");
  } else if (au == "[20s]") {
    set_String(0, 1500, "[30s]");
  } else if (au == "[30s]") {
    set_String(0, 1500, "[关]");
  } else {
    set_String(0, 1500, "[10s]");
  }

  Serial.println("Set auto is " + au);
}

void setUIDSave(String id) {
//  Serial.println("保存"+id);
  set_String(4, 1900, id);
}

String getClock() {
  String c = get_String(EEPROM.read(0), 1800);
  if (!c.startsWith("[", 0)) {
    return "[24h]";
  } else {
    return c;
  }
}

void setClock() {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         String c = get_String(EEPROM.read(0), 1800);
  if (c == "[12h]") {
    set_String(0, 1800, "[24h]");
  } else {
    set_String(0, 1800, "[12h]");
  }

//  Serial.println("Set clock is " + c);
}

void upAuto() {
  au++;
  String a = getAuto();
  int s = 0;
  bool re = false;
  if (a == "[10s]") {
    s = 100;
  } else if (a == "[20s]") {
    s = 200;
  } else if (a == "[30s]") {
    s = 300;
  } else {
    au = 0;
    return;
  }
  if (au == s) {
    au = 0;
    if (ti == 1) {
      ti++;
      mov = 8;
      if (ti == 1) {
        d0 = 0;
        d2 = 1;
      } else if (ti == 2) {
        d0 = 1;
        d2 = 0;
      }
    } else if (ti == 2) {
      ti--;
      mov = -8;
      if (ti == 0) {
        d0 = 0;
        d2 = 1;
      } else if (ti == 1) {
        d0 = 1;
        d2 = 0;
      }
    }
  }
}

void biliInfo() {
  u8g2.setFont(u8g2_font_wqy13_t_gb2312);
  while (1) {
    u8g2.firstPage();
    do {
      u8g2.setCursor(0, 15);
      u8g2.print(nickname);
      u8g2.setCursor(0, 47);
      u8g2.print("UID: " + uid);
      u8g2.setCursor(4, 31);
      u8g2.print(vip);
      u8g2.setCursor(0, 62);
      u8g2.print("本月 " + elec + " 人为我充电");
      if (level == "1") {
        u8g2.drawXBMP(90, 16, 32, 16, lv1);
      } else if (level == "2") {
        u8g2.drawXBMP(90, 16, 32, 16, lv2);
      } else if (level == "3") {
        u8g2.drawXBMP(90, 16, 32, 16, lv3);
      } else if (level == "4") {
        u8g2.drawXBMP(90, 16, 32, 16, lv4);
      } else if (level == "5") {
        u8g2.drawXBMP(90, 16, 32, 16, lv5);
      } else if (level == "6") {
        u8g2.drawXBMP(90, 16, 32, 16, lv6);
      } else {
        u8g2.drawXBMP(90, 18, 32, 16, lv0);
      }
    } while (u8g2.nextPage());
    delay(50);
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
      return;
    } else if (digitalRead(UP) == HIGH && up_p == 0) {
      digitalWrite(led, HIGH);
      up_p = 1;
      return;
    } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
      digitalWrite(led, HIGH);
      down_p = 1;
      return;
    }
    if (digitalRead(UP) == LOW && up_p == 1) {
      digitalWrite(led, LOW);
      up_p = 0;
    } else if (digitalRead(DOWN) == LOW && down_p == 1) {
      digitalWrite(led, LOW);
      down_p = 0;
    } else if (digitalRead(OK) == LOW && ok_p == 1) {
      digitalWrite(led, LOW);
      ok_p = 0;
    }
  }
}


int getPos(String text) {
  int size = text.length();
  int one = 0;
  for (int i = 0; i < size; i++) {
    if (text[i] == '1') {
      one++;
    }
  }
   int posi = 64 - ((18 + (size * 11) - (one * 6)) / 2) + 144;
   return posi;
}

void getDie(){
  int a = 0;
  int b = 0;
  while (1) {
    u8g2.firstPage();
    do {
      u8g2.setFont(u8g2_font_wqy13_t_gb2312);
      u8g2.setCursor(13, 26);
      u8g2.print("是否恢复出厂设置?");
      u8g2.setCursor(51, 48);
      u8g2.print("取消");
      u8g2.setCursor(51, 62);
      u8g2.print("确定");
      if (a == 0) {
        b = 47;
      } else {
        b = 61;
      }
      u8g2.setCursor(51 - 13, b);
      u8g2.print(">");
    } while ( u8g2.nextPage() );
    if (digitalRead(OK) == HIGH && ok_p == 0) {
      digitalWrite(led, HIGH);
      ok_p = 1;
      if (a == 0) {
        return;
      } else {
        set_String(8, 1024, "########");
        set_String(8, 1500, "########");
        set_String(8, 1800, "########");
        set_String(8, 1900, "########");
        set_String(8, 1, "00000000");
        ESP.eraseConfig();
        ESP.restart();
      }
    } else if (digitalRead(UP) == HIGH && up_p == 0) {
      digitalWrite(led, HIGH);
      up_p = 1;
      a = 0;
    } else if (digitalRead(DOWN) == HIGH && down_p == 0) {
      digitalWrite(led, HIGH);
      down_p = 1;
      a = 1;
    }
    if (digitalRead(UP) == LOW && up_p == 1) {
      digitalWrite(led, LOW);
      up_p = 0;
    } else if (digitalRead(DOWN) == LOW && down_p == 1) {
      digitalWrite(led, LOW);
      down_p = 0;
    } else if (digitalRead(OK) == LOW && ok_p == 1) {
      digitalWrite(led, LOW);
      ok_p = 0;
    }
    delay(50);
  }
}